// var i;
// var $uIView = require("./UIView");
// var $playerDataManager = require("./PlayerDataManager");
// var $excel = require("./Excel");
// var $uI_TuJianItem = require("./UI_TuJianItem");
// var d = cc._decorator;
// var p = d.ccclass;
// var h = d.property;
// var f = d.inspector;
// var g = (function (e) {
//     function t() {
//         var t = (null !== e && e.apply(this, arguments)) || this;
//         t.itemNode = null;
//         t.layout1 = null;
//         t.layout2 = null;
//         t.weijiesuo = null;
//         return t;
//     }
//     __extends(t, e);
//     t.prototype._show = function (e) {
//         var t = [];
//         for (var o = 1; o < arguments.length; o++) {
//             t[o - 1] = arguments[o];
//         }
//     };
//     t.prototype.onEnable = function () {
//         this.initUi();
//     };
//     t.prototype.initUi = function () {
//         var e = $excel.Excel.shuiguo_all;
//         var t = e.size;
//         var o = [];
//         var n = [];
//         for (var i = 0; i < t; i++) {
//             var a = e.get(i + 1 + 1e3);
//             if (a.jinJieLv > 0) {
//                 this.isJieSuo(a) ? o.push(a) : n.push(a);
//             }
//         }
//         this.setShuiGuoItem(this.layout1, o);
//         this.setShuiGuoItem(this.layout2, n);
//     };
//     t.prototype.setShuiGuoItem = function (e, t) {
//         var o = e.children;
//         o.forEach(function (e) {
//             e.active = !1;
//         });
//         for (var n = 0; n < t.length; n++) {
//             var i = t[n];
//             var a = o[n];
//             if (!a) {
//                 a = cc.instantiate(this.itemNode);
//                 e.addChild(a);
//             }
//             a.x = 0;
//             a.active = !0;
//             a.getComponent($uI_TuJianItem.default).initData(i);
//         }
//     };
//     t.prototype.isJieSuo = function (e) {
//         var t = this.shuiguoId(e.id);
//         var o = this.shuiguoId(e.jinjieShuiGuoId);
//         return !(!t || !o);
//     };
//     t.prototype.shuiguoId = function (e) {
//         var t = $playerDataManager.PlayerDataMgr.GetEquipDataById(e);
//         var o = $excel.Excel.shuiguo(e);
//         if (t) {
//             if (t.isUnLock) {
//                 var n = o.jinJieLv;
//                 return t.level >= n;
//             }
//             return !1;
//         }
//         return !1;
//     };
//     t.prototype.onCloseView = function () {
//         this._close();
//     };
//     __decorate([h(cc.Node)], t.prototype, "itemNode", void 0);
//     __decorate([h(cc.Node)], t.prototype, "layout1", void 0);
//     __decorate([h(cc.Node)], t.prototype, "layout2", void 0);
//     __decorate([h(cc.Node)], t.prototype, "weijiesuo", void 0);
//     return __decorate([p], t);
// })($uIView.default);
// exports.default = g;


// import UIView from "./UIView";
// import {PlayerDataMgr} from "./PlayerDataManager";
// import {Excel} from "./Excel";
// import UI_TuJianItem from "./UI_TuJianItem";

// const { ccclass, property, inspector } = cc._decorator;

// /**
//  * 水果展示界面管理类
//  * 建议新名称：ShuiGuoDisplayView
//  */
// @ccclass
// export default class UI_TuJian extends UIView {
//     /** 预制体节点，用于实例化水果项 */
//     @property(cc.Node)
//     public itemNode: cc.Node = null;

//     /** 第一个布局节点 */
//     @property(cc.Node)
//     public layout1: cc.Node = null;

//     /** 第二个布局节点 */
//     @property(cc.Node)
//     public layout2: cc.Node = null;

//     /** 未解锁节点 */
//     @property(cc.Node)
//     public weijiesuo: cc.Node = null;

//     /**
//      * 显示界面
//      * 建议方法名：showView
//      * @param args 任意数量的参数
//      */
//     protected _show(...args: any[]): void {
//         // 此函数未实现具体逻辑
//     }

//     /**
//      * 当节点启用时调用
//      * 建议方法名：enable
//      */
//     public onEnable(): void {
//         this.initUi();
//     }

//     /**
//      * 初始化UI界面
//      * 建议方法名：initializeUI
//      */
//     public initUi(): void {
//         const allFruits = Excel.shuiguo_all;
//         const totalFruits = allFruits.size;
//         const unlockedFruits: any[] = [];
//         const lockedFruits: any[] = [];

//         for (let index = 0; index < totalFruits; index++) {
//             const fruit = allFruits.get(index + 1001);
//             if (fruit.jinJieLv > 0) {
//                 this.isJieSuo(fruit) ? unlockedFruits.push(fruit) : lockedFruits.push(fruit);
//             }
//         }

//         this.setShuiGuoItem(this.layout1, unlockedFruits);
//         this.setShuiGuoItem(this.layout2, lockedFruits);
//     }

//     /**
//      * 设置水果项
//      * 建议方法名：setFruitItems
//      * @param layout 布局节点
//      * @param fruits 水果数据数组
//      */
//     public setShuiGuoItem(layout: cc.Node, fruits: any[]): void {
//         const children = layout.children;
//         children.forEach(child => {
//             child.active = false;
//         });

//         for (let index = 0; index < fruits.length; index++) {
//             const fruitData = fruits[index];
//             let itemNode = children[index];
//             if (!itemNode) {
//                 itemNode = cc.instantiate(this.itemNode);
//                 layout.addChild(itemNode);
//             }
//             itemNode.x = 0;
//             itemNode.active = true;
//             itemNode.getComponent(UI_TuJianItem).initData(fruitData);
//         }
//     }

//     /**
//      * 判断水果是否解锁
//      * 建议方法名：isUnlocked
//      * @param fruit 水果数据
//      * @returns 是否解锁
//      */
//     public isJieSuo(fruit: any): boolean {
//         const mainFruitId = this.shuiguoId(fruit.id);
//         const advancedFruitId = this.shuiguoId(fruit.jinjieShuiGuoId);
//         return !!(mainFruitId && advancedFruitId);
//     }

//     /**
//      * 根据ID获取水果
//      * 建议方法名：getFruitById
//      * @param id 水果ID
//      * @returns boolean 是否解锁
//      */
//     public shuiguoId(id: number): boolean {
//         const equipData = PlayerDataMgr.GetEquipDataById(id);
//         const fruitData = Excel.shuiguo(id);

//         if (equipData) {
//             if (equipData.isUnLock) {
//                 const requiredLevel = fruitData.jinJieLv;
//                 return equipData.level >= requiredLevel;
//             }
//         }
//         return false;
//     }

//     /**
//      * 关闭界面
//      * 建议方法名：closeView
//      */
//     public onCloseView(): void {
//         this._close();
//     }
// }

import UIViewBase from "./UIView";
import {PlayerDataMgr} from "./PlayerDataManager";
import {Excel} from "./Excel";
import ViewTuJianItem from "./UI_TuJianItem";

const { ccclass, property, inspector } = cc._decorator;

/**
 * 水果展示界面管理类
 * 建议新名称：ShuiGuoDisplayView
 */
@ccclass
export default class ViewTuJian extends UIViewBase {
    /** 预制体节点，用于实例化水果项 */
    @property(cc.Node)
    public itemNode: cc.Node = null;

    /** 第一个布局节点 */
    @property(cc.Node)
    public layout1: cc.Node = null;

    /** 第二个布局节点 */
    @property(cc.Node)
    public layout2: cc.Node = null;

    /** 未解锁节点 */
    @property(cc.Node)
    public weijiesuo: cc.Node = null;

    /**
     * 显示界面
     * 建议方法名：showView
     * @param args 任意数量的参数
     */
    protected _show(...args: any[]): void {
        // 此函数未实现具体逻辑
    }

    /**
     * 当节点启用时调用
     * 建议方法名：enable
     */
    public onEnable(): void {
        this.initUI();
    }

    /**
     * 初始化UI界面
     * 建议方法名：initializeUI
     */
    public initUI(): void {
        const allFruits = Excel.shuiguo_all;
        const totalFruits = allFruits.size;
        const unlockedFruits: any[] = [];
        const lockedFruits: any[] = [];

        for (let index = 0; index < totalFruits; index++) {
            const fruit = allFruits.get(index + 1001);
            if (fruit && fruit.jinJieLv > 0) {
                this.isUnlocked(fruit) ? unlockedFruits.push(fruit) : lockedFruits.push(fruit);
            }
        }

        this.setFruitItems(this.layout1, unlockedFruits);
        this.setFruitItems(this.layout2, lockedFruits);
    }

    /**
     * 设置水果项
     * 建议方法名：setFruitItems
     * @param layout 布局节点
     * @param fruits 水果数据数组
     */
    public setFruitItems(layout: cc.Node, fruits: any[]): void {
        layout.children.forEach(child => {
            child.active = false;
        });

        fruits.forEach((fruitData, index) => {
            let itemNode = layout.children[index];
            if (!itemNode) {
                itemNode = cc.instantiate(this.itemNode);
                layout.addChild(itemNode);
            }
            itemNode.setPosition(0, 0);
            itemNode.active = true;
            itemNode.getComponent(ViewTuJianItem).initializeData(fruitData);
        });
    }

    /**
     * 判断水果是否解锁
     * 建议方法名：isUnlocked
     * @param fruit 水果数据
     * @returns 是否解锁
     */
    public isUnlocked(fruit: any): boolean {
        const mainFruitUnlocked = this.getFruitById(fruit.id);
        const advancedFruitUnlocked = this.getFruitById(fruit.jinjieShuiGuoId);
        return !!(mainFruitUnlocked && advancedFruitUnlocked);
    }

    /**
     * 根据ID获取水果是否解锁
     * 建议方法名：getFruitById
     * @param id 水果ID
     * @returns boolean 是否解锁
     */
    public getFruitById(id: number): boolean {
        const equipData = PlayerDataMgr.getEquipDataById(id);
        const fruitData = Excel.shuiguo(id);

        if (equipData && equipData.isUnLock) {
            return equipData.level >= fruitData.jinJieLv;
        }
        return false;
    }

    /**
     * 关闭界面
     * 建议方法名：closeView
     */
    public onCloseView(): void {
        this._close();
    }
}